package org.example.operator.transform

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD

/**
 * rdd的算子，也就是rdd的方法
 *
 * rdd的算子分为两大类，一类是转换，类似装饰模式，会使用多个套接类将执行逻辑定义好
 * 另一类是执行，真正开始执行的逻辑
 */
object Spark_RDD_Operator_Transform {
  def main(args: Array[String]): Unit = {

    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val context = new SparkContext(conf)

    val rdd: RDD[Int] = context.makeRDD(List(1,2,3,4))

    // 将所有的数字都乘以2

    def mapFunction(num:Int):Int={
      num*2
    }

    val value: RDD[Int] = rdd.map(mapFunction)

    val value1: RDD[Int] = rdd.map((num: Int) => {
      num * 2
    })

    val value2: RDD[Int] = rdd.map(_*2)

    value2.collect().foreach(println)
    context.stop();  }
}
